package com.shenda.api.service;

import java.util.concurrent.CompletableFuture;

import com.shenda.api.dto.ConfigDTO;
import com.shenda.api.dto.OnlinesDTO;
import com.shenda.api.entity.Gyro;
import com.swak.entity.Page;
import com.swak.entity.Parameters;

/**
 * 陀螺仪服务
 * 
 * @author lifeng
 */
public interface GyroServiceAsync {

	/**
	 * 在线设备
	 * 
	 * @return
	 */
	CompletableFuture<OnlinesDTO> onlines();

	/**
	 * 分页查询
	 * 
	 * @param query
	 * @param param
	 * @return
	 */
	CompletableFuture<Page> page(Gyro query, Parameters param);

	/**
	 * 入库
	 * 
	 * @param query
	 * @return
	 */
	CompletableFuture<Void> save(Gyro query);

	/**
	 * 入库
	 * 
	 * @param query
	 * @return
	 */
	CompletableFuture<Void> updateSettings(Gyro query);

	/**
	 * 入库
	 * 
	 * @param query
	 * @return
	 */
	CompletableFuture<Void> updateFlush(Gyro query);

	/**
	 * 刷新
	 * 
	 * @return
	 */
	CompletableFuture<Void> refresh();

	/**
	 * 配置
	 * 
	 * @return
	 */
	CompletableFuture<Void> config(ConfigDTO config);

	/**
	 * 开始采集
	 * 
	 * @return
	 */
	CompletableFuture<Void> gather();

	/**
	 * 停止采集
	 * 
	 * @return
	 */
	CompletableFuture<Void> ungather();

	/**
	 * 开始上传
	 * 
	 * @return
	 */
	CompletableFuture<Void> upload();

	/**
	 * 停止上传
	 * 
	 * @return
	 */
	CompletableFuture<Void> unupload();

	/**
	 * 清除
	 * 
	 * @return
	 */
	CompletableFuture<Void> flush();

	/**
	 * 重启
	 * 
	 * @return
	 */
	CompletableFuture<Void> reboot();

	/**
	 * 关闭
	 * 
	 * @return
	 */
	CompletableFuture<Void> close();
}